
import org.junit.Test;
import static org.junit.Assert.*;

/**
 * Clase para efectuar pruebas unitarias a la clase ArbolBinario
 */
public class ArbolBinarioTest {

    public ArbolBinarioTest() {
    }
    
    //----------------------
	//METODOS
	//----------------------
   
    /**
     * Prueba del metodo cambiarPadre 
     */
    @Test
    public void testCambiarPadre() 
    {
        ArbolBinario<Cadena> p = new ArbolBinario();
        p.cambiarValor(new Cadena());
        p.darValor().cambiarCadena("cadena");
        ArbolBinario<Cadena> temp = new ArbolBinario();
        temp.cambiarPadre(p);
        assert((p.darValor().darCadena().equals(temp.darPadre().darValor().darCadena())));
    }

    /**
     * Prueba del metodo cambiarIzquierda 
     */
    @Test
    public void testCambiarIzquierda() 
    {
    	ArbolBinario<Cadena> l = new ArbolBinario();
        l.cambiarValor(new Cadena());
        ArbolBinario temp = new ArbolBinario();
        temp.cambiarIzquierda(l);
        assert(l.darPadre().equals(temp));
    }

    /**
     * Prueba del metodo cambiarDerecha 
     */
    @Test
    public void testCambiarDerecha() 
    {
        ArbolBinario<Cadena> r = new ArbolBinario();
        ArbolBinario temp = new ArbolBinario();
        temp.cambiarDerecha(r);
        assert(r.darPadre().equals(temp));
    }

    /**
     * Prueba del metodo cambiarValor 
     */
    @Test
    public void testCambiarValor() {
        String val = "valor";
        ArbolBinario temp = new ArbolBinario();
        temp.cambiarValor(val);
        assert(temp.darValor().equals("valor"));
   }

    /**
     * Prueba del metodo darPadre 
     */
    @Test
    public void testDarPadre() {
        ArbolBinario temp = new ArbolBinario();
        ArbolBinario padre = new ArbolBinario();
        padre.cambiarIzquierda(temp);
        ArbolBinario resultado = padre;
        ArbolBinario resultado2 = temp.darPadre();
        assertEquals(resultado, resultado2);
   }

    /**
     * Prueba del metodo darIzquierda 
     */
    @Test
    public void testDarIzquierda() {
        ArbolBinario temp = new ArbolBinario();
        ArbolBinario hijo = new ArbolBinario();
        temp.cambiarIzquierda(hijo);
        ArbolBinario resultado = hijo;
        ArbolBinario resultado2 = temp.darIzquierda();
        assertEquals(resultado, resultado2);
    }

    /**
     * Prueba del metodo darDerecha 
     */
    @Test
    public void testDarDerecha() {
        ArbolBinario temp = new ArbolBinario();
        ArbolBinario hijo = new ArbolBinario();
        temp.cambiarDerecha(hijo);
        ArbolBinario resultado = hijo;
        ArbolBinario resultado2 = temp.darDerecha();
        assertEquals(resultado, resultado2);
    }

    /**
     * Prueba del metodo darValor
     */
    @Test
    public void testDarValor() {
        ArbolBinario<String> temp = new ArbolBinario();
        temp.cambiarValor("valor");
        String resultado = "valor";
        Object resultado2 = temp.darValor();
        assertEquals(resultado, resultado2);
   }

}

